package main

/*
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 测试一些在OC9中被移除的简单函数
// 避免使用有复杂声明冲突的内部符号

// 强制引用一些被移除的符号
void test_removed_symbols() {
    printf("Testing symbols that may be removed in OC9...\n");
    
    // 这些符号根据diff分析在OC9中被移除
    // 我们通过extern声明来强制链接器查找这些符号
    
    // 声明外部符号（不调用，只是引用）
    extern void __libc_allocate_rtsig_private();
    extern void __libc_current_sigrtmax_private(); 
    extern void __libc_current_sigrtmin_private();
    extern void __default_morecore();
    extern void __clock_getcpuclockid();
    
    // 创建函数指针数组，强制链接器保留这些符号
    void* symbol_refs[] = {
        (void*)__libc_allocate_rtsig_private,
        (void*)__libc_current_sigrtmax_private,
        (void*)__libc_current_sigrtmin_private,
        (void*)__default_morecore,
        (void*)__clock_getcpuclockid,
        NULL
    };
    
    // 打印地址但不调用（避免运行时错误）
		int i;
    for (i = 0; symbol_refs[i] != NULL; i++) {
        printf("Symbol %d address: %p\n", i, symbol_refs[i]);
    }
}

// 测试一些基本功能确保程序能正常运行
void test_basic() {
    printf("Basic test - malloc/free\n");
    void *ptr = malloc(100);
    if (ptr) {
        strcpy((char*)ptr, "test");
        printf("Allocated and wrote: %s\n", (char*)ptr);
        free(ptr);
    }
}
*/
import "C"

import (
	"fmt"
	"runtime"
)

func main() {
	fmt.Println("=== Simple Missing Symbols Test ===")
	fmt.Printf("Go version: %s\n", runtime.Version())
	fmt.Println()

	// 基本测试
	fmt.Println("1. Basic functionality test:")
	C.test_basic()
	fmt.Println()

	// 测试被移除的符号
	fmt.Println("2. Testing potentially removed symbols:")
	C.test_removed_symbols()
	fmt.Println()

	fmt.Println("=== Test completed ===")
	fmt.Println("This program should compile on OC7 but may have linking issues on OC9")
}